The present invention relates in general to communication system protocols, and more particularly, to an apparatus, method and system for an intermediate reliability protocol for network message transmission and reception.
Various communication system protocols have evolved both having varying degrees of reliability and having varying delay or timeliness characteristics. In general, those protocols having very high reliability, virtually guaranteeing the arrival of a data packet at its specified destination, generally have high delay characteristics. For example, the X.25 protocol provides guaranteed delivery of every message transmitted, but such guaranteed delivery may occur over a longer period of time than desirable or preferable for real time applications. For example, for telephony, information that is delayed by more than a few seconds, or even one-half second, is typically no longer required, and has become useless and irrelevant to real time voice communications. Similarly, other protocols such as TCP/IP also have high reliability characteristics with correspondingly high delay characteristics, and accordingly also may be inappropriate for real time applications.
Conversely, protocols such as UDP/IP, without such high reliability, are generally excessively lossy for such real time applications, such as telephony. In such protocols, messages are frequently lost, and many real time situations and applications require a higher degree of reliability.
Voice telecommunications and other real time applications, as a consequence, have different timing and reliability requirements than more typical or general internet applications. Typical internet applications such as electronic mail have a guaranteed delivery, but a timing delay in the delivery is not very important. With real time applications such as telephony, however, timing and other delay issues are very important, while the occasional loss of a message under heavy traffic circumstances is considered relatively acceptable or normal.
A connection oriented protocol is also not desirable or preferable for such real time applications, because the total number of connections in a complex telephony system could be very high. In addition, various high reliability systems achieve that reliability by redirecting traffic when a hardware node is unavailable and, for a telephony system, reestablishing such connections is highly undesirable.
As a consequence, a need remains for a protocol having an intermediate level of reliability, having reasonable or acceptable assurance that messages are delivered, while simultaneously providing sufficiently timely delivery to meet the requirements of real time applications. Such a protocol should be able to buffer messages to reduce message loss, and should be able to detect hardware failures in the network and reroute traffic around them. In addition, such an apparatus, method and system should be capable of implementation in a cost-effective fashion into existing telecommunication systems and networks.
The apparatus, method and system of the present invention provide an intermediate reliability protocol, having reasonable assurance of message delivery, and having timely delivery with low delay characteristics, especially suited for real-time applications such as inter-system communication in or between telephony applications. Resynchronizations may occur to avoid undue delays in message transmission and reception, while messages may be buffered or stored to reduce message loss. Such resynchronization, including clearing buffers and resetting sequence numbers, occurs while the protocol is maintained as up and valid, with ongoing communication, rather than with the prior art loss of the connection.
Potential hardware failures in the network are detected automatically, such as the loss of an ethernet, with traffic correspondingly re-routed. In addition, the apparatus, method and system of the present invention may be implemented in a cost-effective fashion into existing telecommunication systems and networks, and may be implemented as an upper level protocol on top of existing protocols such as UDP/IP.
The preferred system embodiment includes a plurality of servers, connected to each other over a plurality of networks, such as over two ethernets. A first server, when operative, includes program instructions to transmit a message. A second server, which is coupled to the first server over the networks, when operative, includes program instructions to receive the message and, under typical circumstances, the received message will be delivered locally on the second server, to a designated local process. Under other circumstances, the second server will resynchronize to the received message, dropping stored messages and avoiding further delay in message delivery. For such resynchronization, when the received message has a sequence number which is out of sequence, the second server has further instructions, first, to determine whether a reset bit is set and, when the reset bit is set, to resynchronize to the received message; second, to determine whether the first server is inactive and, when the first server is inactive, to resynchronize to the received message; and third, to determine whether a predetermined number of transmit reject messages have been transmitted to the first server and, when the predetermined number of transmit reject messages have been transmitted to the first server, to resynchronize to the received message.
In the various embodiments, such resynchronization includes resynchronizing to the sequence number of the currently received message, and clearing receive buffers in a shared memory of the second server. The second server has further instructions to maintain the state of the protocol as valid with the first server during such resynchronization. In addition, when the received message has a sequence number which is out of sequence, the second server will buffer the received message in a shared memory, and will transmit a reject message to the first server, requesting a retransmission of outstanding or missed messages.
Potential hardware failures are detected, in the preferred system embodiment, when a message has not been received from the first server during a first predetermined period of time, and under such circumstances, the second server has further instructions to transmit a first connectivity message to the first server over a first network of the plurality of networks, such as a first ethernet. If and when a response message has not been received from the first server during a second predetermined period of time, the second server has further instructions to transmit a second connectivity message to the first server over a second network of the plurality of networks, such as a second ethernet. If and when a response message has not been received from the first server during a third predetermined period of time, the second server has further instructions to set a status of the first server as inactive, and to clear all transmit buffers and all receive buffers, in a shared memory of the second server, pertaining to the first server.
Numerous other advantages and features of the present invention will become readily apparent from the following detailed description of the invention and the embodiments thereof, from the claims and from the accompanying drawings.